<?php
require_once(INCPATH . "core/ioc/applicationcontext.inc.php");
require_once(MODULESPATH . "finance/finance.inc.php");

/**
 * 财经系统数据层证券类的接口。
 */
interface IDStock extends IInjectEnable{    
    /**
     * 获取证券列表。
     * @param String $market 证券市场编码。
     * @return 证券列表。
     */
    function getStocks($market = null);
}

/**
 * 财经系统数据层财经类的接口。
 */
interface IDFinance extends IInjectEnable{    
    /**
     * 获取证券类型的列表。
     */
    function getStockTypes();
    
    /**
     * 获取证券市场的列表。
     */
    function getStockMarkets();
    
    /**
     * 获取证券交易类型的列表。
     */
    function getInvestmentTypes();
}

/**
 * 财经系统数据层投资组合类的接口。
 */
interface IDCombination extends IAdjustUserData, IInjectEnable{    
    /**
     * 获取用户默认的投资组合ID。
     * @param Int $uid 用户ID。
     * @return 用户默认的投资组合ID。
     */
    function getUserDefaultCombinationId($uid);
    
    /**
     * 添加投资组合。
     * @param String $name 名称。
     * @param String $title 标题。
     * @param Int $weight 权重。
     * @param Int $owner 用户ID。
     * @return 新增加的ID。
     */
    function createCombination($name, $title, $weight, $owner);
    
    /**
     * 向投资组合中添加证券。
     * @param String $symbol 证券代码。
     * @param Int $combinationId 投资组合ID。
     * @param Int $uid 用户ID。
     * @return 是否操作成功。
     */
    function addStock($symbol, $combinationId, $uid);
    
    /**
     * 获取用户的投资组合列表。
     * @return 用户的投资组合列表。
     * @param Int $uid 用户ID。
     */
    function getUserCombinations($uid);
}

/**
 * 财经系统数据层投资类的接口。
 */
interface IDInvestment extends IAdjustUserData, IInjectEnable{    
    /**
     * 添加证券交易数据。
     * @param String $symbol 证券代码。
     * @param Int $combinationId 投资组合ID。
     * @param Int $uid 用户ID。
     * @param Int $type 交易类型。
     * @param Int $date 交易日期。
     * @param Int $quantity 证券数量。
     * @param Int $cost 证券总成本。
     * @param String $note 交易手记。
     */
    function addInvestment($symbol, $combinationId, $uid, $type, $date, $quantity, $cost, $note);
}
?>
